//==============================================================================
#include "CApp.h"
#include <iostream>
//==============================================================================
bool CApp::OnInit() {
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
        return false;
    }

    if((Surf_Display = SDL_SetVideoMode(WWIDTH, WHEIGHT, 32,
        SDL_HWSURFACE | SDL_DOUBLEBUF )) == NULL) {
        return false;
    }

    if(CArea::AreaControl.OnLoad("./maps/1.area") == false) {
    	return false;
    }

    SDL_EnableKeyRepeat(1, SDL_DEFAULT_REPEAT_INTERVAL / 3);
    //SDL_EnableKeyRepeat(70, 70);

    if(Player.OnLoad("izquierda.png", 64 ,128 ,8,0) == false ||
       Player.OnLoad("derecha.png", 64 ,128 ,8,1) == false ||
       Player.OnLoad("abajo.png", 64 ,128 ,8,2) == false ||
       Player.OnLoad("arriba.png", 64 ,128 ,8,3) == false
       )  {
    	return false;
    }
    if(ZombieVerde1.OnLoad("izquierdaZV.png", 64 ,64 ,6,0) == false ||
       ZombieVerde1.OnLoad("derechaZV.png", 64 ,64 ,6,1) == false ||
       ZombieVerde1.OnLoad("abajoZV.png", 64 ,64 ,6,2) == false ||
       ZombieVerde1.OnLoad("arribaZV.png", 64 ,64 ,6,3) == false
       )  {
    	return false;
    }

    if(ZombieRojo1.OnLoad("izquierdaZR.png", 64 ,64 ,6,0) == false ||
       ZombieRojo1.OnLoad("derechaZR.png", 64 ,64 ,6,1) == false ||
       ZombieRojo1.OnLoad("abajoZR.png", 64 ,64 ,6,2) == false ||
       ZombieRojo1.OnLoad("arribaZR.png", 64 ,64 ,6,3) == false
       )  {
    	return false;
    }
    if(ZombieAzul1.OnLoad("izquierdaZA.png", 64 ,64 ,6,0) == false ||
       ZombieAzul1.OnLoad("derechaZA.png", 64 ,64 ,6,1) == false ||
       ZombieAzul1.OnLoad("abajoZA.png", 64 ,64 ,6,2) == false ||
       ZombieAzul1.OnLoad("arribaZA.png", 64 ,64 ,6,3) == false
       )  {
    	return false;
    }
/*
if(Planta1.OnLoad("plantanodisparaI.png", 59 ,74 ,4,0) == false ||
       Planta1.OnLoad("plantadisparaI.png",59 ,74 ,4,1) == false )  {
    	return false;
    }*/

    CargarPlantas();
    //Planta1.X=192;
    //Planta1.Y=128;

    CObjetoAnimado::ObjectList.push_back(&Player);
    CObjetoAnimado::ObjectList.push_back(&ZombieVerde1);
    CObjetoAnimado::ObjectList.push_back(&ZombieRojo1);
    CObjetoAnimado::ObjectList.push_back(&ZombieAzul1);
    //CObjetoAnimado::ObjectList.push_back(&Planta1);
    Player.ObtenerNuevaPosicion();
    ZombieVerde1.ObtenerNuevaPosicion();
    ZombieRojo1.ObtenerNuevaPosicion();
    ZombieAzul1.ObtenerNuevaPosicion();

	CCamera::CameraControl.TargetMode = TARGET_MODE_CENTER;
    CCamera::CameraControl.SetTarget(&Player.X, &Player.Y);

    return true;
}
//==============================================================================
void CApp::CargarPlantas() {
    CMap* Map =CArea::AreaControl.GetMap(1,1);

    for(int i = 0;i < Map->PlantasIList.size();i++) {
        t_posicion posPlanta = Map->PlantasIList.at(i);
        CPlanta *nuevaPlanta;
        nuevaPlanta=new CPlanta();
        nuevaPlanta->OnLoad("plantanodisparaI.png", 59 ,74 ,4,0);
        nuevaPlanta->OnLoad("plantadisparaI.png",59 ,74 ,4,1);
        nuevaPlanta->X=posPlanta.X;
        nuevaPlanta->Y=posPlanta.Y;
        nuevaPlanta->SetDireccionDisparo(false);
        CObjetoAnimado::ObjectList.push_back(nuevaPlanta);
    }
    for(int i = 0;i < Map->PlantasDList.size();i++) {
        t_posicion posPlanta = Map->PlantasDList.at(i);
        CPlanta *nuevaPlanta;
        nuevaPlanta=new CPlanta();
        nuevaPlanta->OnLoad("plantanodisparaD.png", 59 ,74 ,4,0);
        nuevaPlanta->OnLoad("plantadisparaD.png",59 ,74 ,4,1);
        nuevaPlanta->X=posPlanta.X;
        nuevaPlanta->Y=posPlanta.Y;
        nuevaPlanta->SetDireccionDisparo(true);
        CObjetoAnimado::ObjectList.push_back(nuevaPlanta);
    }


}
//==============================================================================
